/* Universidad del Valle de Guatemala
 * Mariana Castillo, 12319
 * Julio Maldonado, 12377
 * Seccion 30, Algoritmos y Estructura de Datos
 * Archivo Texto
 */
package hoja9;


import java.util.*;


public class MatrizAdyacencia <V,E> implements Grafo <V,E> {
    private Vector vertices= new Vector();
    private int [][] arcos= new int [30][30];
    
    /**
     * Constructor de la matriz de Adyancencia que
     * muestra las conexiones entre dos vertices
     */
    public MatrizAdyacencia(){
        for(int i=0;i<30; i++){
            for(int j=0; j<30;j++){
                if(i==j){
                    arcos[i][j]=0;      
                }else{
                    arcos[i][j]=20000;                   
                }
            }
        }
    }
    
    public void addVertice(V nombre){
        if(!vertices.contains(nombre)){
            vertices.add(nombre);
        }
    }
    
    public void addEdge(V v1, V v2, E nombre){
        int i= vertices.indexOf(v1);
        int j= vertices.indexOf(v2);
        String tmp= ""+nombre;
        int peso= Integer.parseInt(tmp);
        arcos[i][j]= peso;
    }
    
    public void show(){
        System.out.println("\nMATRIZ DE ADYACENCIA");
        for(int a=0; a<vertices.size();a++){
            System.out.append(" ("+(a+1)+")\t\t");
        }
        System.out.println();
        for(int i=0; i<vertices.size(); i++){
            System.out.print(i+1+")");
            for(int j=0; j<vertices.size(); j++){
                System.out.print(""+arcos[i][j]+"\t\t");
            }
        System.out.println("");
        
        }
    }
    
    public int size(){
        return vertices.size();
    }
    
    public V get(int vertice){
        return (V)vertices.get(vertice);
    }
    public int getEdge(V v1, V v2){
        return arcos[vertices.indexOf(v1)][vertices.indexOf(v2)];
    }
        
    public boolean containsVertice(V vertice){
        return vertices.contains(vertice);
    }
    
    public int getIndex(V vertice){
        return vertices.indexOf(vertice);
    }
      
}
